/*
*二叉数的实现
*/
#include<stdlib.h>
#include<stdio.h>
#define ElemType int
typedef struct BitNode{//数的节点
	ElemType e;
	struct BitNode *lchild,*rchild;
}BitNode;
typedef struct{
        BitNode *root;//根节点的地址
        int     deep;//树的深度
        int     num;//树节点的个数
}Tree;
void InitTree(Tree* T)
{
	T=(Tree*)malloc(sizeof(Tree));
	(*T).root=NULL;
	(*T).deep=0;
	(*T).num=0;
	printf("初始化二叉树成功！\n");
}
void DestroyTree(Tree* T)
{
	if((*T).root==NULL) printf("已经是空了！\n");
	free(T);
}
void CreateTree(BitNode* T)
{
        char ch;
	scanf("%s",&ch);
	if(ch==' ') T=NULL;
	else{
	    T=(BitNode*)malloc(sizeof(BitNode));
	    (*T).e=ch;
	    CreateTree((*T).lchild);
	    CreateTree((*T).rchild);	
	}	
}
int visit(ElemType e)
{
	printf("%d ",e);
	return 1;
}
int PreOrder(BitNode* t)
{
	if(t!=NULL){
		if(visit(t->e))
			if(PreOrder(t->lchild))		
				if(PreOrder(t->rchild)) return 1;
       		return 0;
	}
	else return 1;
}
int main(void)
{
	Tree e;
	InitTree(&e);
	CreateTree(e.root);
	PreOrder(e.root);	
}







